package com.mm.duc4j.util;

import java.util.LinkedList;

import com.mm.duc4j.client.Client;
import com.mm.duc4j.vo.Duc4j;

/**
 * 工具类
 * 
 * <pre><pre>
 * @author cmh
 * @since 2016-3-14 下午11:04:10
 * @version 1.0
 */
public class Duc4jUtil {

	/**
	 * 注册用户名
	 * 
	 * <pre>第一次注册完，需要先手动登录，把用户激活<pre>
	 * @author cmh
	 * @since 2016-3-14 下午11:53:22
	 * @version 1.0
	 * @param username 用户名
	 * @param password 密码
	 * @param email 邮箱
	 * @return
	 */
	public static Duc4j register(String username, String password, String email){
		Duc4j d = new Duc4j();
		Client c = new Client();

		//setcookie('Example_auth', '', -86400);
//		生成同步退出的代码
		
		//uc Authorization has expired
//		 调整服务器时间
		
		String $returns = c.uc_user_register(username, password, email);
		if(null==$returns || "".equals($returns)){
			d.setStatus(-101);
			d.setMessage("请检查配置");
			return d;
		}
		
		int $uid = Integer.parseInt($returns);
		if($uid <= 0) {
			if($uid == -1) {
				d.setStatus(-1);
				d.setMessage("用户名不合法");
			} else if($uid == -2) {
				d.setStatus(-2);
				d.setMessage("包含要允许注册的词语");
			} else if($uid == -3) {
				d.setStatus(-3);
				d.setMessage("用户名已经存在");
			} else if($uid == -4) {
				d.setStatus(-4);
				d.setMessage("Email 格式有误");
			} else if($uid == -5) {
				d.setStatus(-5);
				d.setMessage("Email 不允许注册");
			} else if($uid == -6) {
				d.setStatus(-6);
				d.setMessage("该 Email 已经被注册");
			} else {
				d.setStatus(-101);
				d.setMessage("请检查配置");
			}
		} else {
			d.setMessage("注册成功");
		}
		return d;
	}
	
	/**
	 * 登录
	 * 
	 * <pre><pre>
	 * @author cmh
	 * @since 2016-3-14 下午11:33:08
	 * @version 1.0
	 * @param username 用户名
	 * @param password 密码
	 * @return
	 */
	public static Duc4j login(String username, String password){
		Duc4j d = new Duc4j();
		Client c = new Client();
		String result = c.uc_user_login(username, password);
		
		LinkedList<String> rs = XMLHelper.uc_unserialize(result);
		if(rs.size()>0){
			int $uid = Integer.parseInt(rs.get(0));
			String $username = rs.get(1);
			String $password = rs.get(2);
			String $email = rs.get(3);
			if($uid > 0) {
				d.setUid($uid);
				d.setMessage("登录成功");
				d.setUsername($username);
				d.setPassword($password);
				d.setEmail($email);
			} else if($uid == -1) {
				d.setStatus(-1);
				d.setMessage("用户不存在,或者被删除");
			} else if($uid == -2) {
				d.setStatus(-2);
				d.setMessage("密码错误");
			} else {
				d.setStatus(-99);
				d.setMessage("未定义错误");
			}
		}else{
			d.setStatus(-100);
			d.setMessage(result);
		}
		return d;
	}
	
	/**
	 * 同步用户登录，使连接uc的其他应用登录，比如使用论坛自动登录
	 * 
	 * <pre>需要先在uc控制中心 开启 同步登录<pre>
	 * @author cmh
	 * @since 2016-3-14 下午11:31:48
	 * @version 1.0
	 * @param uid
	 * @return
	 */
	public static String synlogin(int uid){
		return new Client().uc_user_synlogin(uid);
	}
	
	/**
	 * 同步登出
	 * 
	 * <pre><pre>
	 * @author cmh
	 * @since 2016-3-14 下午11:35:28
	 * @version 1.0
	 * @return
	 */
	public static String synlogout(int uid){
		//setcookie('Example_auth', '', -86400);
//		生成同步退出的代码
		String $ucsynlogout = new Client().uc_user_synlogout(uid);
		return $ucsynlogout;
	}
	
	/**
	 * 解码
	 * 
	 * <pre><pre>
	 * @author cmh
	 * @since 2016-3-14 下午11:45:47
	 * @version 1.0
	 * @param code
	 * @return
	 */
	public static String authcode(String code){
		return new Client().uc_authcode(code,"DECODE");
	}
	
}
